package com.example.testplatform.mapper;

import com.example.testplatform.entity.TestApplication;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface TestApplicationMapper {
    
    // 查询申请单列表
    List<Map<String, Object>> findAll(
            @Param("page") Integer page,
            @Param("pageSize") Integer pageSize,
            @Param("productId") Long productId,
            @Param("status") Integer status,
            @Param("applicantId") Long applicantId,
            @Param("testerId") Long testerId,
            @Param("startTime") String startTime,
            @Param("endTime") String endTime);
    
    // 查询申请单总数
    Integer count(
            @Param("productId") Long productId,
            @Param("status") Integer status,
            @Param("applicantId") Long applicantId,
            @Param("testerId") Long testerId,
            @Param("startTime") String startTime,
            @Param("endTime") String endTime);
    
    // 根据ID查询申请单详情
    TestApplication findById(@Param("id") Long id);
    
    // 新增申请单
    Integer insert(TestApplication application);
    
    // 更新申请单
    Integer update(TestApplication application);
    
    // 删除申请单
    Integer delete(@Param("id") Long id);
    
    // 更新申请单状态
    Integer updateStatus(
            @Param("id") Long id,
            @Param("status") Integer status,
            @Param("platformAuditOpinion") String platformAuditOpinion,
            @Param("testManagerAuditOpinion") String testManagerAuditOpinion,
            @Param("testerIds") String testerIds);
    
    // 获取申请单历史记录（简单实现，实际项目中可能需要独立的历史记录表）
    List<Map<String, Object>> getHistory(@Param("applicationId") Long applicationId);
}